#include<stdio.h>

int main()
{   
    // = : 赋值运算符
    //变量初始化：变量定义时进行赋值
    //变量一定要初始化：不初始化可能会有垃圾值
    // + - * 
    //    / 整除
    //  小数除法：在前面在1.0*
    //   % 取余
    // +=   -=   *=  /=   %=
    //      a+=1;   ----> a=a+1;    
    int a = 0;
    a = 31;
    int b = 10;
    printf("%d\n",a+b);
    printf("%d\n",a-b);
    printf("%d\n",a*b);
    printf("%d\n",a%b);

    int a=1;
    int b=a++;   //先给出a的值，再自加1
    int b=++a;   // 先自加1，给出a（变量本身）
    int b=(a++)+(a++);
    printf("%d\n",b);
    printf("%d\n",b);
    //位运算符：能计算到二进制位的运算符
    //与 或 异或
    //& ：按位与  把某些位置0
    //  1 & 1 = 1
    //  1 & 0 = 0
    //  0 & 0 = 0
    // | ： 按位或 把某些位置1
    // 1 | 1 = 1
    // 1 | 1 = 1
    // 0 | 0 = 0
    // ^ 按位异或 ：相异为1 相同为0
    //  1 ^ 1 = 0
    //  1 ^ 0 = 1
    //  0 ^ 0 = 0

    //交换两个变量的值
    int a = 1;
    int b = 2;
    //引入第三个变量
    int c = a;
    a = b;
    b = c;
    printf("a = %d b = %d",a,b);
    //输出  a = 2 b = 1

    //算数法
    a = a - b;
    b = a + b;
    b = b - a;
    printf("a = %d b = %d",a,b);
    //输出   a = 2 b = 1

    //异或法
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    //输出   a = 2 b = 1



    //printf("%d\n",~0);
    //输出 -1

    //  左移右移    <<   >>
    //求两个数的平均数
    int a = 10;
    int b = 20;

    //算数法
    int c = a + (b - a) / 2;

    //位操作法
    //(a & b) : 取相同位置上的平均数
    //(a ^ b)>>1 : 取不同位置上的平均数
    int c = (a & b) + ((a ^ b) >> 1);

    //逻辑运算符 ： 判断真和假的符号
    // == 判断相等
    // >  >=   <  <=   !=
    printf("%d\n",1 == 1);  //1代表真 0代表假
    //输出1
    // && : 左右两边表达式同时成立则结果为真
    // || ： 左右两边表达式有一边成立，则结果为真
    printf("%d\n", (1!=0) && (1>0));
    //输出1
    printf("%d\n", (1!=0) && (1<0));
    //输出0
    printf("%d\n", (1!=0) || (1<0));
    //输出1
    printf("%d\n", (1==0) || (1<0));
    //输出0
    //非0就是真
    //计算机的短路机制：当&&的左边为假，右边不再执行
    //当||的左边为真，右边不再执行
    int a=-1;
    int b=0;
    int d = ++a && --b;
    printf("a:%d\n b:%d\n d:%d\n",a,b,d);
    //输出 a:0
    //     b:0
    
    // 非  ！ ： 假变真，真变假
    //  非任何非零数都是0,非0是1
     // ？ ：      表达式 ？a ：b   表达式成立，结果为a，否则结果为b
    int a = 1;
    int b = 2;
    int c = a > b ? a : b;
    //输出 c = 2
    return 0;
}
    
